package com.xnyzc.lhy.order.service.order;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xnyzc.lhy.common.entity.Rv;
import com.xnyzc.lhy.order.entity.order.OaDOrder;
import com.xnyzc.lhy.order.entity.param.cms.PageDto;
import com.xnyzc.lhy.order.entity.param.order.CharteredOrderInfoParam;
import com.xnyzc.lhy.order.entity.system.OaSysBillRules;

import java.math.BigDecimal;
import java.util.Date;


/**
 * <p>
 * 司机订单相关 服务类
 * </p>
 *
 * @author huxuekuo
 * @since 2019-07-19
 */
public interface IOaDOrderCorrelationService extends IService<OaDOrder> {

    /**
     * 司机端订单列表
     *
     * @param userId 司机用户ID
     * @param type   订单类型
     * @param page   页码
     * @return
     */
    Rv dOrderList(Long userId, String type, Integer page);

    /**
     * 司机端订单详情
     *
     * @param orderNo 订单号
     * @return
     */
    Rv dOrderDetails(String orderNo, String userType, String tag);

    /**
     * 获取司机行程列表
     *
     * @param driverId 司机ID
     * @param pageDto  分页
     * @return
     */
    Rv getDriverOrder(Long driverId, PageDto pageDto);

    /**
     * 司机端改派
     * @param driverId
     * @param orderNo
     * @return
     */
    Rv getDriverReassignmentOrder(Long driverId, String orderNo);
    /**
     * 获取司机预约行程列表
     *
     * @param driverId 司机ID
     * @param pageDto  分页
     * @return
     */
    Rv getDriverBookingOrder(Long driverId, PageDto pageDto);

    /**
     * 获取司机行程详情
     *
     * @param orderNo 订单ID
     * @return
     */
    Rv getOrderInfo(String orderNo, Date appointmentTime);
    /**
     * 包车开始行程
     */
    Rv charteredStart(CharteredOrderInfoParam charteredOrderInfoParam,Long driverId);
    /**
     * 包车开始行程
     */
    Rv charteredEnd(CharteredOrderInfoParam charteredOrderInfoParam,Long driverId);
    /**
     * 结束包车订单
     */
    Rv allCharteredEnd(String orderNo);
    /**
     * 获取费用明细
     *
     * @param orderNo 账单ID
     * @return
     */
    Rv getBillDetails(String orderNo, String appCode);

    /**
     * 获取首页数据
     *
     * @return
     */
    Rv getHomeDetails();

    /**
     * 平台抽成比查询
     */
    OaSysBillRules getDrawRatio(Long rulesId);

    /**
     * 计算抽成
     *
     * @param amount
     * @param draw
     * @return
     */
    String draw(BigDecimal amount, BigDecimal draw);

}
